//
//  TestObj.m
//  block学习
//
//  Created by Hello Cai on 2019/3/26.
//  Copyright © 2019 Hello Cai. All rights reserved.
//

#import "TestObj.h"
#import <objc/runtime.h>

@implementation TestObj

/** arc中获取retainCount的三种方式
    这些方式仅适合用来debug，在多线程运用中返回值不够准确*/
-(int)arcDebugRetainCount{
    
    //方式一（使用KVC）
//    int count = [[self valueForKey:@"retainCount"] intValue];
    
    //方式二（私有API）
//    OBJC_EXTERN int _objc_rootRetainCount(id);
//    int count = _objc_rootRetainCount(self);
    
    //方式三（使用CFGetRetainCount）
    int count = (int)CFGetRetainCount((__bridge CFTypeRef)(self));

    return count;
}

@end
